/*
 * Copyright (C), 2013-2016, 上海汽车集团股份有限公司
 * FileName: GcRecycleDemo.java
 * Author:   chenliang
 * Date:     2016年12月28日 下午2:14:21
 * Description: //模块目的、功能描述      
 * History: //修改记录
 * <author>      <time>      <version>    <desc>
 * 修改人姓名             修改时间            版本号                  描述
 */
package com.saic.jvm;


import java.lang.reflect.Method;
import java.util.concurrent.TimeUnit;

import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;

/**
 * 〈一句话功能简述〉<br>
 * 〈功能详细描述〉
 *
 * @author chenliang
 * @see [相关类/方法]（可选）
 * @since [产品/模块版本] （可选）
 */
public class GcRecyclePermGenOutOfMemoryError2Demo {
    public static void main(String[] args) throws InterruptedException {
        TimeUnit.SECONDS.sleep(30);
        while(true){
            Enhancer enhancer = new Enhancer();
            enhancer.setSuperclass(ShoppingCart.class);
            enhancer.setUseCache(false);// 关闭CGLib缓存，否则总是生成同一个类
            enhancer.setCallback(new MethodInterceptor() {
                @Override
                public Object intercept(Object paramObject, Method paramMethod, Object[] paramArrayOfObject, MethodProxy paramMethodProxy) throws Throwable {
                    return paramMethodProxy.invokeSuper(paramObject, paramArrayOfObject);
                }                
            });
            ShoppingCart demo = (ShoppingCart) enhancer.create();
//            System.out.println(demo.getParentOrderNo());
//            TimeUnit.MILLISECONDS.sleep(1);
        }
    }
}
